package cn.lx.es.query.search.service;

import cn.lx.es.query.search.entity.PageList;
import cn.lx.es.query.search.entity.PageSortHighLight;
import cn.lx.es.query.search.entity.SearchParam;

/**
 * @ClassName EsSearchService
 * @Description: ES搜索服务接口
 * @Author: 落雪
 * @CreateDate: 2025/7/3 08:30
 * @UpdateUser: 落雪
 * @UpdateDate: 2025/7/3 08:30
 * @UpdateRemark:
 * @Version: 1.0
 */
public interface EsSearchService<T extends PageSortHighLight> {

    /**
     * 查询数据
     *
     * @param param 搜索参数
     * @param clazz 实体类类型
     * @return 分页结果
     */
    PageList<T> search(SearchParam<T> param, Class<T> clazz);

    /**
     * 跨索引查询数据
     *
     * @param param 搜索参数
     * @param clazz 实体类类型
     * @param indices 索引名称数组
     * @return 分页结果
     */
    PageList<T> search(SearchParam<T> param, Class<T> clazz, String... indices);

}
